UnitVector<-function(n){matrix(rep(1,n),n,1)} sympower <- function(x,pow) { edecomp <- eigen(x) roots <- edecomp$val v <- edecomp$vec d <- roots^pow if(length(roots)==1) d <- matrix(d,1,1) else d <- diag(d) sympow <- v %*% d %*% t(v) sympow } P <-function(x) { y <- x %*% solve(t(x) %*% x) %*% t(x) y } Q <- function(x) { q <- diag(dim(x)[1]) - P(x) q } CompleteSymmetricMatrix <- function(x) {L <- length(x) p <- (sqrt(8*L + 1) -1)/2 y <- matrix(0,p,p) count <- 0 for(i in 1:p ) {for (j in 1:i){count <- count+1 y[i,j] <- x[count] y[j,i] <- x[count] } } y } CompleteCorrelationMatrix <- function(x) {L <- length(x) p <- (sqrt(8*L + 1) +1)/2 y <- matrix(1,p,p) count <- 0 for(i in 2:p ) {for (j in 1:(i-1)){count <- count+1 y[i,j] <- x[count] y[j,i] <- x[count] } } y } MakeExactData <- function(mean,var,n,use.population=FALSE) { mu<-mean sigma <- var if(length(mu) == 1) mu <- matrix(mu,1,1) else if(!is.matrix(mu))mu <- matrix(mu,ncol=1) if(length(sigma)==1) sigma <- matrix(sigma,1,1) else if(!is.matrix(sigma))sigma <- diag(sigma) p <- dim(sigma)[1] x <- matrix(rnorm(n*p),n,p) input.cov <- if(use.population)((n-1)/n) * cov(x) else cov(x) x <-x %*% sympower(input.cov,-1/2) %*% sympower(sigma,1/2) diff <- matrix(0,1,p) for(i in 1:p){ diff[1,i] <- mu[i]-mean(x[,i]) } for(i in 1:n) { for(j in 1:p) { x[i,j] <- x[i,j] + diff[1,j]} } x }